package com.jl.mapper;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jl.model.ProductionLine;
import com.jl.model.in.ProductionLineIn;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 生产线表 Mapper 接口
 * </p>
 *
 * @author JiangJian
 * @since 2019-03-06
 */
public interface ProductionLineMapper extends BaseMapper<ProductionLine> {


    /**
     * 查询生产线列表
     * 这里的Param中必须使用 ew为名称 这是因为使用了mybatisplus中的内定的参数
     * 且在xml中必须是使用 美元符 $ 来作为占位符
     * @param page
     * @param qw
     * @return
     */
    List<Map<String,Object>> selectDataGrid(Page<Map<String,Object>> page, @Param("ew") QueryWrapper<ProductionLine> qw);
    /**
     *获取生产线的名称
     * @param name 生产线名称
     * @return 结果数量
     */
    Integer selectProductionLineNameCount(@Param("name") String name);
    /**
     * 获取生产线的名称(编辑时)
     * @param name
     * @return
     */
    ProductionLineIn selectProductionLineInByName(@Param("name") String name);

    /********************下面的方法是用于统计该生产线上设备的一些情况***********************/


    /**
     * 本月故障次数TOP5设备
     * @param lineId 生产线id
     * @return 本月故障次数TOP5设备
     */
    List<Map<String,Object>> selectTopFiveFaultCountInLine(@Param("lineId")Long lineId);
    /**
     * 本月故障时间超2小时故障次数TOP5设备
     * @param lineId 生产线id
     * @return 本月故障时间超2小时故障次数TOP5设备
     */
    List<Map<String,Object>> selectTopFiveOverHourCountInLine(@Param("lineId")Long lineId);
    /**
     * 本月故障时间长度TOP5设备
     * @param lineId 生产线id
     * @return 本月故障时间长度TOP5设备
     */
    List<Map<String,Object>> selectTopFiveTotalTimeInLine(@Param("lineId")Long lineId);

}
